/////////////////////////////////////////////////////////////////////////////
// Name:        ax_menu_resource.h
// Purpose:     Resource/menu interaction classes
// Author:      Julian Smart
// Modified by:
// Created:     2009-03-20
// RCS-ID:
// Copyright:   (c) Julian Smart
// Licence:     New BSD License
/////////////////////////////////////////////////////////////////////////////

#ifndef _AX_MENU_RESOURCE_H_
#define _AX_MENU_RESOURCE_H_

/*
 * Includes
 */

#include "ax/ax_menu.h"

/*
 * Forward declarations
 */

class AxResource;

/**
    @class AxMenuItemResourceData

    @category{ax_resource}
 */

class AxMenuItemResourceData: public AxMenuItemData
{
    DECLARE_CLASS( AxMenuItemResourceData )

public:
// Constructors

    AxMenuItemResourceData(const AxMenuItemResourceData& data) { Init(); Copy(data); }
    AxMenuItemResourceData(AxResource* resource = NULL) { Init(); m_resource = resource; }
    ~AxMenuItemResourceData() {}

// Operations

    /// Member initialisation
    void Init() { m_resource = NULL; }

    void Copy(const AxMenuItemResourceData& data) { m_resource = data.m_resource; }
    void operator=(const AxMenuItemResourceData& data) { Copy(data); }

    virtual AxMenuItemData* Clone() const { return new AxMenuItemResourceData(*this); }

    AxResource* GetResource() const { return m_resource; }
    void SetResource(AxResource* resource) { m_resource = resource; }

protected:
    AxResource* m_resource;
};

#endif
    // _AX_MENU_RESOURCE_H_
